qx.Class.define("mutual.formPlan", {
			extend : qx.ui.groupbox.GroupBox,
			events : {
				"cancelar" : "qx.event.type.Event"
			},
			construct : function(idPlan) {
				this.base(arguments);
				this.setLayout(new qx.ui.layout.VBox(5));

				//this.slctSeguro = new qx.ui.form.TextField();
				this.slctSeguro = new mutual.selectSeguros();
				this.txtNombre = new qx.ui.form.TextField();
				this.dtFechaInicio = new qx.ui.form.DateField();
				this.dtFechaFin = new qx.ui.form.DateField();
				this.txtCapitalAsegurado = new qx.ui.form.TextField();
				this.txtPrecioCuota = new qx.ui.form.TextField();
				this.txtCostoMil = new qx.ui.form.TextField();
				this.txtCantidadBeneficiarios = new qx.ui.form.TextField();

				this.btnAceptar = new qx.ui.form.Button("Aceptar");
				this.btnAceptar.addListener("execute", function() {
							this.persistPlan(idPlan);
						}, this);
				this.btnCancelar = new qx.ui.form.Button("Cancelar");
				this.btnCancelar.addListener("execute", function() {
							this.fireEvent("cancelar");
							this.destroy();
						}, this);

				this.add(new qx.ui.basic.Label("Aseguradora: "));
				this.add(this.slctSeguro);
				this.add(new qx.ui.basic.Label("Nombre Plan: "));
				this.add(this.txtNombre);
				this.add(new qx.ui.basic.Label("Fecha Inicio: "));
				this.add(this.dtFechaInicio);
				this.add(new qx.ui.basic.Label("Fecha Fin: "));
				this.add(this.dtFechaFin);
				this.add(new qx.ui.basic.Label("Cap. Asegurado: "));
				this.add(this.txtCapitalAsegurado);
				this.add(new qx.ui.basic.Label("Precio Cuota: "));
				this.add(this.txtPrecioCuota);
				this.add(new qx.ui.basic.Label("Costo Mil: "));
				this.add(this.txtCostoMil);
				this.add(new qx.ui.basic.Label("Cant. Beneficiarios: "));
				this.add(this.txtCantidadBeneficiarios);

				if (idPlan) {
					var plan = this.getPlan(idPlan);
					this.showPlan(plan);
				}

				/* cargamos los botones de actualizacion */
				var content = new qx.ui.container.Composite(new qx.ui.layout.HBox(4).set({alignX : "center"}))
				content.add(this.btnAceptar);
				content.add(this.btnCancelar);
				this.add(content);
			},

			members : {
				slctSeguro : null,
				txtNombre : null,
				dtFechaInicio : null,
				dtFechaFin : null,
				txtCapitalAsegurado : null,
				txtPrecioCuota : null,
				txtCostoMil : null,
				txtCantidadBeneficiarios : null,


				persistSuccess : null,

				btnAceptar : null,
				btnCancelar : null,

				/* methods */
				setIdAseguradora : function(idSeguro) {
					this.slctSeguro.setSeguroId(idSeguro);
				},
				setNombre : function(nombre) {
					this.txtNombre.setValue(nombre);
				},
				setFechaInicio : function(fechaInicio) {
					if (!fechaInicio || fechaInicio == '0000-00-00')
						return;
					var objDate = mutual.utilities.getDateObject(fechaInicio);
					this.dtFechaInicio.setValue(objDate);
				},
				setFechaFin: function(fechaFin) {
					if (!fechaFin || fechaFin == '0000-00-00') 
						return;
					var objDate = mutual.utilities.getDateObject(fechaFin);
					this.dtFechaFin.setValue(objDate);
				},
				setCapitalAsegurado : function(capitalAsegurado) {
					this.txtCapitalAsegurado.setValue(capitalAsegurado);
				},
				setPrecioCuota : function(precioCuota) {
					this.txtPrecioCuota.setValue(precioCuota);
				},
				setCostoMil : function(costoMil) {
					this.txtCostoMil.setValue(costoMil);
				},
				setCantidadBeneficiarios: function(cantidadBeneficiarios) {
					this.txtCantidadBeneficiarios.setValue(cantidadBeneficiarios);
				},
				
				getIdAseguradora : function() {
					return this.slctSeguro.getSeguroId();
				},
				getNombre : function() {
					return this.txtNombre.getValue();
				},
				getFechaInicio : function() {
					//return this.dtFechaInicio.getValue();
					var fechaInicio = {
						realValue : this.dtFechaInicio.getValue(),
						formatedValue : this.dtFechaInicio.getDateFormat().format(this.dtFechaInicio.getValue()) 
					}
					return fechaInicio;
				},
				getFechaFin : function() {
					//return this.dtFechaFin.getValue();
					var fechaFin = {
						realValue : this.dtFechaFin.getValue(),
						formatedValue : this.dtFechaFin.getDateFormat().format(this.dtFechaFin.getValue()) 
					}
					return fechaFin;
				},
				getCapitalAsegurado : function() {
					return this.txtCapitalAsegurado.getValue();
				},
				getPrecioCuota : function() {
					return this.txtPrecioCuota.getValue();
				},
				getCostoMil : function() {
					return this.txtCostoMil.getValue();
				},
				getCantidadBeneficiarios : function() {
					return this.txtCantidadBeneficiarios.getValue();
				},
				
				
				getPlan : function(idPlan) {
					var rpc = new qx.io.remote.Rpc("services/",
							"mutual.Plan");
					var plan = rpc.callSync("getPlan", idPlan);
					return plan;
				},
				showPlan : function(plan) {
					this.setIdAseguradora(plan.id_seguro);
					this.setNombre(plan.nombre);
					this.setFechaInicio(plan.fecha_inicio);
					this.setFechaFin(plan.fecha_fin);
					this.setCapitalAsegurado(plan.capital_asegurado);
					this.setPrecioCuota(plan.precio_cuota);
					this.setCostoMil(plan.costo_mil);
					this.setCantidadBeneficiarios(plan.cantidad_beneficiarios);
				},
				persistPlan : function(idPlan) {
					var nuevo = !(idPlan);
					var plan = {
						id_plan : idPlan,
						id_seguro : this.getIdAseguradora(),
						nombre : this.getNombre(),
						fecha_inicio : this.getFechaInicio(),
						fecha_fin : this.getFechaFin(),
						capital_asegurado : this.getCapitalAsegurado(),
						precio_cuota : this.getPrecioCuota(),
						costo_mil : this.getCostoMil(),
						cantidad_beneficiarios : this.getCantidadBeneficiarios()
					};
					if (!this.validate(plan)){
						return;
					}
					var method = (nuevo) ? "insertPlan" : "editPlan";
					var rpc = new qx.io.remote.Rpc("services/",
							"mutual.Plan");
					var response = rpc.callSync(method, plan);

					this.persistSuccess();
					this.destroy();
				},
			
				validate : function(plan){
					if (!plan.id_seguro || plan.id_seguro == 0){
						alert("Falta definir el Seguro");
						this.slctSeguro.focus();
						return false;
					}else if(!plan.nombre || plan.nombre == 0){
						alert("Falta definir el Nombre del Plan");
						this.txtNombre.focus();
						return false;
					}else if(!plan.fecha_inicio){
						alert("Falta definir la Fecha de Inicio");
						this.dtFechaInicio.focus();
						return false;
					}else if(!mutual.utilities.isValidDate(plan.fecha_inicio.formatedValue)){
						alert("El formato de la fecha de inicio no es correcto");
						this.dtFechaInicio.focus();
						return false;
					}else if(plan.fecha_fin.realValue && !mutual.utilities.isValidDate(plan.fecha_fin.formatedValue)){
						alert("El formato de la fecha de fin no es correcto");
						this.dtFechaFin.focus();
						return false;
					}else if(!plan.precio_cuota){
						alert("Falta definir el precio de la cuota");
						this.txtPrecioCuota.focus();
						return false;
					}else if(!mutual.utilities.isDecimal(plan.capital_asegurado)){
						alert("El capital asegurado no tiene el formato correcto (Ej: 232.15)");
						this.txtCapitalAsegurado.focus();
						return false;
					}else if(!mutual.utilities.isDecimal(plan.precio_cuota)){
						alert("El precio de la cuota no tiene el formato correcto (Ej: 232.15)");
						this.txtPrecioCuota.focus();
						return false;
					}else if(!mutual.utilities.isDecimal(plan.costo_mil)){
						alert("El Costo Mil no tiene el formato correcto (Ej: 232.15)");
						this.txtCostoMil.focus();
						return false;
					}else if(!mutual.utilities.isNumeric(plan.cantidad_beneficiarios) || parseInt(plan.cantidad_beneficiarios) <= 0){
						alert("La cantidad de beneficiarios no tiene el formato correcto");
						this.txtCantidadBeneficiarios.focus();
						return false;
					}else{
						return true;
					}
				}
			}
		});
